package Day35.test1;



import java.util.ArrayList;
import java.util.List;

/**
 * 商品操作类，该类用于操作库存商品
 * 操作类中包含一系列的操作方法:
 *  1.向库存中添加商品
 *  2.查看库存信息
 *  3.修改库存量
 */
public class ProductOperate {
    //创建一个用于存储商品的List集合
    private List<Product> productList = new ArrayList<>();

    /**
     * 向库存中添加商品
     * @param product  商品对象
     */
    public void addProduct(Product product) throws NullPointerException{
        //如果商品为null则表示添加失败，使用异常来处理失败
        if(product == null){
            throw  new NullPointerException("商品对象为空!");
        }

        productList.add(product);
    }


    /**
     * 查看库存信息
     */
    public void queryProducts(){
        System.out.println("商品编号\t商品名称\t单价\t尺寸\t库存量");
        for (Product product:productList) {
            System.out.println(product.getProNo()+"\t"+product.getProName()+"\t"
                            + product.getProPrice()+"\t"+product.getProSize()+"\t"+product.getProNum());
        }
    }


    /**
     * 根据商品编号更新商品的库存量
     * 增加库存参数为正整数，减少库存参数为负整数
     * @param productNo
     * @param productNum
     */
    public void updateProductNum(int productNo,int productNum) throws Exception {
        if(productNum == 0){
            throw new Exception("库存更新量不能为零");
        }

        //根据商品编号获得商品对象
        for(Product product : productList){
            if(product.getProNo() == productNo){//找到商品
                if(productNum < 0){//库存量减少，检测减少后的库存量是否为负数，如果为负数表示错误
                    if(product.getProNum()+productNum<0){
                        throw new Exception("库存不足!");
                    }
                }
                //大于0表示增加，小于0表示减少
                product.setProNum(product.getProNum()+productNum);
                return;//返回
            }
        }
        throw new Exception("您要修改的商品不存在!");




    }
}
